package com.moyoutian.leetcode;


import java.util.Arrays;

/**
 * 869. 重新排序得到 2 的幂
 * <p>
 * 给定正整数 N ，我们按任何顺序（包括原始顺序）将数字重新排序，注意其前导数字不能为零。
 * <p>
 * 如果我们可以通过上述方式得到 2 的幂，返回 true；否则，返回 false。
 * <p>
 * <p>
 * 示例 1：
 * <p>
 * 输入：1
 * <p>
 * 输出：true
 * <p>
 * 示例 2：
 * <p>
 * 输入：10
 * <p>
 * 输出：false
 * <p>
 * 示例 3：
 * <p>
 * 输入：16
 * <p>
 * 输出：true
 * <p>
 * 示例 4：
 * <p>
 * 输入：24
 * <p>
 * 输出：false
 * <p>
 * 示例 5：
 * <p>
 * 输入：46
 * <p>
 * 输出：true
 * <p>
 * <p>
 * 提示：
 * <p>
 * 1 <= N <= 10^9
 */
public class Demo869 {

    public static void main(String[] args) {
        System.out.println(reorderedPowerOf2(46));
    }

    public static boolean reorderedPowerOf2(int n) {
        int i = 1;
        while (i > 0) {
            if (getSort(i).equals(getSort(n))){
                return true;
            }
            i = i << 1;
        }

        return false;
    }

    /**
     * 获取数字转换，字符串排在排序后结果
     */
    public static String getSort(int n) {
        char[] ss = Integer.toString(n).toCharArray();
        Arrays.sort(ss);
        return String.valueOf(ss);
    }

}
